package com.zhoug.fileselector.selector;

import com.zhoug.common.annotation.Filetype;
import com.zhoug.common.content.FileType;
import com.zhoug.fileselector.beans.LocalMedia;

import java.io.Serializable;
import java.util.List;

import androidx.annotation.NonNull;


/**
 * 文件选择器接口
 *
 * @Author HK-LJJ
 * @Date 2020/1/6
 * @Description
 */
public interface FileSelector extends IFileSelector {
    int FLAG_IMAGE = 1;// 00000001
    int FLAG_VIDEO = 2;// 00000010
    int FLAG_AUDIO = 4;// 00000100
    int FLAG_WORD = 8;//  00001000
    int FLAG_EXCEL = 16;//00010000
    int FLAG_PDF = 32;//  00100000
    int FLAG_TXT = 64;//  01000000
    int FLAG_ALL = 127;//01111111

    /**
     * 设置选择文件后的回掉
     *
     * @param onFileChooseListener
     * @return
     */
    void setOnSelectListener(onSelectListener onFileChooseListener);

    /**
     * 配置
     *
     * @param config
     * @return
     */
    void setConfig(@NonNull Config config);

    @NonNull
    Config getConfig();

    final class Config implements Serializable {
        /**
         * 选择文件的类型
         */
        @Filetype
        public int fileType = FileType.IMAGE;

        /**
         * 音视频文件的最大播放时长:毫秒
         */
        public long maxDuration = Long.MAX_VALUE;
        /**
         * 音视频文件的最小播放时长
         */
        public long minDuration = 0;
        /**
         * 设置最多选择的文件数
         */
        public int maxNum = Integer.MAX_VALUE;
        /**
         * 设置单选模式
         */
        public boolean singleModel = false;

        /**
         * 是否允许拍摄
         */
        public boolean isCamera = false;
        /**
         * 是否压缩图片
         */
        public boolean compressImage = false;
        /**
         * 图片宽度
         */
        public int compressWidth = 720;
        /**
         * 图片高度
         */
        public int compressHeight = 1080;
        /**
         * 压缩到的大小 单位K
         */
        public int compressSize = 200;


        public Config() {
        }

    }

    /**
     * 选择结果回掉监听
     */
    interface onSelectListener extends Serializable {
        void onResult(List<LocalMedia> medias);
    }

}
